「JSONとJSONPの意外な違いに遭遇した」
「知ってるよ。読み込み方が違うんだ」
「そこじゃない」
「えっ?」
「結局、JSONは文字列として読み込んでeval関数で評価するけど、JSONPは直接読み込んでJavaScriptコードとして評価する」
「うん。そうだよね」
「では最低限の構文の違いを除くと両者は同じなのか」
「うーん。JSONデータの前後にちょっと文字を書き足すとJSONPになるわけだろ?」
「そう。その通り。しかし、その場合に意外な違いが発生することに気づいた。しかも小さなテストデータでは分からない違いだ」
「それはなんだい?」
「安全な文字でエンコードされたバイナリーデータを含む巨大なデータを入れたとき、JSONPなら読めるのに、JSONだと読めないつまりeval関数経由ではエラーになるケースに遭遇した」
「えー」
「このことは言い換えれば、JavaScriptインタプリタの式評価部分とeval関数の動作は等価では無いことを意味する」
「本当に? IEだけってことはないの?」
「試したらSafariとFirefoxでも同じだった」